5 REM *** COWS AND BULLS *** 10 REM 100 REM---- DOCUMENTATION MODULE ------ 110 REM 120 REM R$ = GENERAL PURPOSE VARIABLE 130 REM NP = NUMBER OF PLAYERS 140 REM PN$(10)CLOSE= PLAYERS NAMES 150 REM SN (4) = FOUR DIGITS FOR 155 REM SECRET NUMBER 160 REM TN = TURN NUMBER 170 REM GS$ = STRING FOR GUESSES 180 REM GSCLOSE(4) = FOUR DIGIT GUESS 190 REM BU = BULLS 200 REM CO = COWS 210 REM AG$ = ANOTHER GAME SWITCH 220 REM WN$ = WIN SWITCH 230 REM I = GENERAL INDEX 240 REM J = GENERAL INDEX 250 REM 300 REM---- HOUSEKEEPING MODULE ------- 310 REM 320 DIM PN$ (10) 330 DIM SN (04) 340 DIM GS (04) 345 SP$=" " 350 REM 500 REM---- EXECUTIVE MODULE ---------- 510 REM 515 GOSUB 9000 520 GOSUB 1000 521 REM ... GAME INSTRUCTIONS ... 530 GOSUB 2000 531 REM ... GET PLAYER'S NAMES... 540 GOSUB 3000 541 REM ... PLAY A GAME ... 550 IF AG$<>"Y" THEN 560 555 PRINT"[147] NEW GAME[146]":FOR I = 1 TO 3000: NEXT I 557 GOTO 540 558 POKE53281,0:PRINT"[144][147]LOAD"CHR$(34);"HELLO";CHR$(34)",8":PRINT"RUN" 559 POKE 631,13:POKE632,13:POKE198,2:POKE65535,IX(K,1) 560 GOTO 63000 1000 REM---- GAME INSTRUCTIONS -------- 1010 REM 1020 POKE 53281,7:POKE 53280,6:PRINT"[144][147]":POKE657,128 1025 PRINTCHR$(14) 1030 PRINT" "; 1040 PRINT"[195]OWS & [194]ULLS" 1050 PRINT""; 1060 INPUT "[196]O YOU NEED INSTRUCTIONS?[160](Y OR N) "; R$ 1070 IF R$= "N" THEN 1990 1080 PRINT"[147]" 1090 PRINT"[195]OWS & [194]ULLS IS DESIGNED TO STIMULATE" 1100 PRINT"YOUR DEDUCTIVE POWERS." 1110 PRINT:PRINT"[212]HE OBJECT OF [195]OWS & [194]ULLS IS TO GUESS" 1120 PRINT"A SECRET NUMBER KNOWN ONLY TO YOUR":PRINT"[195]OMMODORE." 1125 PRINT:PRINT"[217]OUR [195]OMMODORE GENERATES THE SECRET" 1126 PRINT"NUMBER AT RANDOM ACCORDING TO THE" 1127 PRINT"FOLLOWING RESTRICTIONS:" 1130 PRINT:PRINT" 1. [212]HE NUMBER HAS FOUR DIGITS" 1131 PRINT:PRINT" 2. [206]O DIGIT MAY BE REPEATED" 1135 PRINT:PRINT"[214]ALID EXAMPLES ARE:" 1136 PRINT:PRINT" 1234":PRINT" 0526 (MAY START WITH ZERO)" 1137 PRINT" 9870" 1140 GOSUB9000:PRINT:PRINT:INPUT" ** HIT RETURN **";R$ 1145 PRINT"[147]":PRINT"[208]LAY GOES LIKE THIS---" 1146 PRINT:PRINT" 1. [217]OU MAKE A GUESS AS TO WHAT YOU" 1147 PRINT" THINK THE SECRET NUMBER IS." 1148 PRINT:PRINT" 2. [217]OUR [195]OMMODORE EVALUATES YOUR GUESS"; 1149 PRINT" AND RESPONDS WITH AN INDICATION" 1150 PRINT" OF HOW GOOD YOUR GUESS WAS." 1151 PRINT:PRINT" 3. [217]OU RECORD YOUR GUESS AND THE" 1152 PRINT" RESPONSE TO IT." 1153 PRINT:PRINT" 4. [212]HEN YOU FORMULATE ANOTHER GUESS" 1154 PRINT" BASED ON PREVIOUS GUESSES AND" 1155 PRINT" RESPONSES." 1156 PRINT:PRINT" 5. [212]HE FIRST PERSON TO GUESS THE" 1157 PRINT" [195]OMMODORE'S SECRET NUMBER WINS.":PRINT:PRINT 1160 GOSUB9000:INPUT" ** HIT RETURN **";R$ 1165 PRINT"[147]":PRINT"[212]HIS IS SHOW THE COMMODORE EVALUTES" 1166 PRINT"YOUR GUESS---":PRINT:PRINT" 1. [198]OR EACH DIGIT THAT YOU HAVE IN THE" 1167 PRINT" CORRECT POSITION YOU ARE AWARDED":PRINT" ONE 'BULL'." 1170 PRINT:PRINT" 2. [198]OR A DIGIT THAT IS IN THE SECRET" 1171 PRINT" NUMBER BUT NOT IN THTE CORRECT" 1172 PRINT" POSITION YOU ARE AWARDED ONE 'COW'." 1175 PRINT:PRINT" 3. [196]IGITS THAT DO NOT APPEAR IN THE" 1176 PRINT" NUMBER AT ALL GENERATE NO RESPONSE.":GOSUB9000 1180 PRINT" ";:INPUT"** HIT RETURN **";R$ 1185 PRINT"[147]":PRINT"[193]SSUME THE SECRET NUMBER IS:" 1186 PRINTTAB(13)"7032":PRINT:PRINT"THEN THESE ARE EXAMPLES OF GUESSES AND" 1187 PRINT"RESPONSES.":PRINT 1190 PRINTTAB(13)"1243 2 COWS" 1191 PRINTTAB(13)"2743 4 COWS" 1192 PRINTTAB(13)"8039 2 BULLS" 1193 PRINTTAB(13)"8079 1 BULL & 1 COW" 1194 PRINTTAB(13)"7032 4 BULLS (WIN)":GOSUB9000 1195 PRINT"":INPUT" ** HIT RETURN **";R$ 1200 PRINT"[147]":PRINT" --- [200][201][206][212] ---" 1201 PRINT:PRINT"[205]AKE YOUR FIRST TWO GUESSES" 1202 PRINT:PRINT" 1234 AND 5678":PRINT 1205 PRINT"[212]HEN IF YOU HAVE FOUR RESPONSES FROM" 1206 PRINT"YOUR FIRST TWO GUESSES," 1207 PRINT" YOU WILL KNOW 9 & 0 ARE NOT IN" 1208 PRINT" THE SECRET NUMBER." 1210 PRINT:PRINT"[201]F YOU HAVE TWO RESPONSES FROM YOUR" 1211 PRINT"FIRST TWO GUESSES," 1212 PRINT" YOU WILL KNOW 9 & 0 ARE IN THE" 1213 PRINT" SECRET NUMBER." 1215 PRINT:PRINT"[215]HAT DO YOU KNOW IF YOU HAVE THREE" 1216 PRINT"RESPONSES FROM THE FIRST TWO GUESSES?":PRINT 1220 GOSUB9000:PRINT" ... [199][207][207][196][160][204][213][195][203] ..." 1221 PRINT" ** HIT RETURN **"; 1222 INPUT"";R$ 1990 RETURN 2000 REM---- GET PLAYER'S NAMES ------- 2010 NP = 0 2020 PRINT"[147]" 2030 NP = NP + 1 2040 PRINT"[197]NTER THE NAME OF PLAYER #[160]";NP 2045 GOSUB9000 2050 PRINT:INPUT"[160]";PN$(NP) 2060 PRINT"[147]" 2070 INPUT"[193]NY MORE PLAYERS? (Y OR N) ";R$ 2080 IF R$= "Y" THEN 2020 2090 RETURN 3000 REM---- PLAY A GAME -------------- 3010 REM 3015 GOSUB9000 3020 GOSUB 4000 3021 REM ... GENERATE SECRET NUMBER... 3030 GOSUB 5000 3031 REM ... PRESENT A TURN 3040 IF WN$ = "N" THEN 3030 3041 REM NO WIN??? 3050 IF TN <>NP THEN 3030 3060 RETURN 4000 REM---- GENERATE SECRET NUMBER --- 4010 REM 4020 I = 0 4030 I = I + 1 4040 IF I > 4 THEN 4110 4050 SN (I) = INT (RND (1)* 10) 4060 J = 0 4070 J = J + 1 4080 IF J = I THEN 4030 4090 IF SN (I) = SN (J) THEN 4050 4100 GOTO 4070 4110 WN$ = "N" 4111 REM WN$CLOSE= WIN SWITCH 4120 RETURN 5000 REM---- PRESENT A TURN ----------- 5010 REM 5020 TN = TN + 1 5030 IF TN > NP THEN TN = 1 5040 PRINT"[147]" 5050 PRINT"[201]T IS " PN$(TN) "'S TURN" 5060 PRINT"" 5070 PRINT"[207]THER PLAYERS DON'T LOOK" 5080 PRINT"" 5090 PRINT"[208]RESS A KEY "PN$(TN)"." 5100 GETK$:IF K$=""THEN 5100 5105 GOSUB9000 5110 GOSUB 6000 5111 REM ... GET A GUESS ... 5120 GOSUB 7000 5121 REM ... EVALUATE GUESS ... 5130 GOSUB 8000 5131 REM ... DISPLAY GUESS RESULT... 5140 RETURN 6000 REM---- GET A GUESS -------------- 6010 REM 6020 PRINT"[147]" 6030 PRINTTAB(10)"[207][203], "PN$(TN) 6040 PRINT"":PRINT"[197]NTER YOUR GUESS, 4 DIGITS, NO REPEATS" 6050 PRINT" ----" 6055 PRINT" "; 6059 GS$="" 6060 INPUT"";GS$ 6070 IF LEN (GS$) <> 4 THEN 6180 6072 IF LEFT$(GS$,1)="E" THEN 6180 6074 IF LEFT$(GS$,1)="+"THEN 6180 6080 IF VAL (GS$)<123 THEN 6180 6081 IF VAL (GS$)> 9876 THEN 6180 6090 I = 0 6100 I = I + 1 6110 IF I > 4 THEN 6300 6120 GS (I) = VAL (MID$(GS$,I,1)) 6130 J = 0 6140 J = J + 1 6150 IF J = I THEN 6100 6160 IF GS (I) = GS (J) THEN 6180 6170 GOTO 6140 6180 PRINT"" 6190 PRINT" " 6200 PRINT"[145][145] "; 6210 GOSUB10000:PRINT"TRY AGAIN[146]" 6240 FOR I = 1 TO6:GOSUB9000:NEXTI:GOSUB11000 6250 PRINT"":PRINTSP$:PRINTSP$:PRINTSP$ 6260 GOTO 6050 6300 RETURN 7000 REM---- EVALUATE GUESS ----------- 7010 REM 7020 BU = 0: CO = 0 7030 FOR I = 1 TO 4 7040 FOR J = 1 TO 4 7050 IF I = J THEN IF GS (J) = SN (I) THEN BU = BU + 1 7060 IF I <> J THEN IF GS (J)= SN (I) THEN CO = CO + 1 7070 NEXT J 7075 GOSUB 9000 7080 NEXT I 7090 RETURN 8000 REM---- DISPLAY GUESS RESULTCLOSE----- 8010 REM 8020 PRINT"[147]";TAB(18);PN$(TN) 8025 PRINT""SPC(15); 8027 PRINT"GUESS = ";GS$ 8030 PRINT""SPC(17); 8040 PRINTCO;" COW";:IF CO<>1 THEN PRINT"S"; 8045 PRINT 8050 PRINT""SPC(17); 8060 PRINTBU" BULL";:IF BU<>1 THEN PRINT"S"; 8065 PRINT 8068 IF BU = 4 THEN 8200 8069 IF WN$= "Y" THEN 8255 8070 PRINT" ";"RECORD YOUR GUESS AND RESULT" 8080 PRINT" ** THEN HIT RETURN **":INPUT"";R$ 8090 GOTO 8500 8200 PRINT""SPC(16); 8205 WN$= "Y" 8210 PRINT"[212]HAT'S IT[146]" 8220 IF TN = NP THEN 8270 8230 PRINT" [204]ET THE OTHERS FINISH THEIR TURN." 8240 PRINT" ";:INPUT"** HIT RETURN **";R$ 8250 GOTO 8500 8255 IF TN <> NP THEN 8070 8260 PRINT" [212]HERE WAS A WINNER" 8270 PRINT"":INPUT"WANT TO PLAY ANOTHER GAME?[160](Y OR N) ";AG$ 8500 RETURN 9000 POKE53281,RND(1)*15:GOSUB10000:POKES+4,16:POKES+11,32:POKES+18,16 9005 POKE53281,7 9010 RETURN 10000 REM---- THINKING SOUNDS ---------- 10005 GOSUB11000 10010 S = 54272 10020 POKE S+1,34+RND(1)*36 10030 POKE S+0,RND(1)*255 10040 POKE S+8,34+RND(1)*36 10050 POKE S+7,RND(1)*255 10060 POKE S+15,34+RND(1)*36 10070 POKE S+14,RND(1)*255 10080 POKE S+5,34:POKES+6,34:POKES+12,34:POKES+13,34:POKES+19,34:POKES+20,34 10090 POKE S + 24,15 10100 POKE S+4,17:POKE S+11,33:POKE 2+18,17 10200 RETURN 11000 POKE S+4,16:POKE S+11,32:POKE S+18,16 :RETURN 63000 PRINT"[147]LOAD"CHR$(34)"PAYLOAD"CHR$(34)",8":PRINT"RUN" 63001 POKE631,13:POKE632,13:POKE198,2